#pragma once

template <class I>
class NodeTree
{
public:
	NodeTree(void);
	~NodeTree(void);
	void SetItem(I*);
	void SetParent( NodeTree<I> *);

	I* mItem;
	NodeTree* mLeft;
	NodeTree* mRight;
	NodeTree* mParent;
};


template <class I> NodeTree<I>::NodeTree(void):mLeft(nullptr),mRight(nullptr),mParent(nullptr),mItem(nullptr)
{

}

template <class I> void  NodeTree<I>::SetParent(NodeTree<I> * parent)
{
	mParent=parent;
}

template <class I> NodeTree<I>::~NodeTree(void)
{
	//TODO: completare
}

template <class I> void NodeTree<I>::SetItem(I* item)
{
	mItem=item;
}